package com.xiangxiangjd.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiangxiangjd.bean.SysDict;
import com.xiangxiangjd.bean.result.ResultPage;
import com.xiangxiangjd.controller.helper.$;
import com.xiangxiangjd.controller.model.ApiResultModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author 肖守凯
 * @since 2020-10-23
 */
@Controller
@RequestMapping("/apiInit/sysDict")
@Api(tags = "数据字典 统计所有的下拉框设计（观察者模式进行设计理念）")
public class SysDictController extends BaseController {



    /** 主页面 */
    @GetMapping("admin/main.html")
    public String main(){
        System.out.println("访问了数据字典主页");

        return  "SysDict/SysdictMain";
    }
    /** 添加页面跳转
     * @return 返回页面
     */
    @GetMapping(value = "admin/addSysDictHtml")
    public String addSysDictHtml( ){
        return "SysDict/SysdictAdd";
    }
    /** 编辑页面跳转
     * @param  id  前端传进的参数
     * @return 返回页面
     */
    @GetMapping(value = "admin/editSysDictHtml")
    public String editSysDictHtml(String id , Model model ){
        model.addAttribute("sysDict",sysDictService.selectSysDictByIdSysDict(id));
        return "SysDict/SysdictEdit";
    }

    /** 查看页面跳转
     * @param  id  前端传进的参数
     * @return 返回页面
     */
    @GetMapping(value = "admin/showSysDictHtml")
    public String showSysDictHtml(String id ,Model model ){
        model.addAttribute("sysDict",sysDictService.selectSysDictByIdSysDict(id));
        return "SysDict/SysdictShow";
    }



    /**
     * 分页查询SysDict
     *
     * @param page    页码
     * @param limit   查几条
     * @param sysDict 前端传进的参数
     * @return 返回统一分页信息
     */
    @GetMapping(value = "/findSysDictByPage")
    @ResponseBody
    @ApiOperation(value="分页查询字典表", notes="分页查询字典表", produces="application/json")
    //@PreAuthorize("hasRole('ROLE_USER')")
    public ResultPage findSysDictByPage(Integer page, Integer limit, SysDict sysDict) {
        return sysDictService.findSysDictByPage(page, limit, sysDict);
    }

    /**
     * 添加SysDict
     *
     * @param sysDict 前端传进的参数
     * @return 返回统一信息
     */
    @PostMapping(value = "admin/addSysDict")
    @ResponseBody
    @ApiOperation(value="添加字典表", notes="添加字典表", produces="application/json")
    //@PreAuthorize("hasRole('ROLE_SUPER_ADMIN')")
    public ApiResultModel saveSysDict( SysDict sysDict) {

        List<SysDict> list = sysDictService.list(new LambdaQueryWrapper<SysDict>()
                .eq(SysDict::getType, sysDict.getType()).eq(SysDict::getK, sysDict.getK()));
        if(list.size()>0){
            return $.error("该序号已存在！");
        }

        return sysDictService.addSysDict(sysDict);
    }
    /**
     * 编辑SysDict
     *
     * @param sysDict 前端传进的参数
     * @return 返回统一信息
     */
    //@PreAuthorize("hasRole('ROLE_SUPER_ADMIN')")
    @PostMapping(value = "/admin/editSysDict")
    @ResponseBody
    @ApiOperation(value="编辑字典表", notes="编辑字典表", produces="application/json")
    public ApiResultModel editSysDict( SysDict sysDict) {
        return sysDictService.editSysDict(sysDict);
    }

//    /**
//     * 删除一条SysDict
//     *
//     * @param id 前端传进的ID
//     * @return 返回统一信息
//     */
//    @PostMapping(value = "admin/delSysDict")
//    @ResponseBody
//    @ApiOperation(value="删除字典表", notes="删除字典表", produces="application/json")
//    public ApiResultModel delSysDict(String id) {
//        return sysDictService.delSysDict(id);
//    }

    /**
     * 查询所有的数据字典
     */
    @PostMapping(value = "admin/getAllSysDict")
    @ResponseBody
    @ApiOperation(value="查询所有的数据字典", notes="查询所有的数据字典", produces="application/json")
    //@PreAuthorize("hasRole('ROLE_SUPER_ADMIN')")
    public ApiResultModel getAllSysDict() {
        List<SysDict> list = sysDictService.getAllTpye();
        return $.success(list);
    }


}
